﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AcademiaDAO;
using AcademiaEntidades;
using System.Web.Security;

public partial class Administracion_ConsultaCursos : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Para controlar el botan para atras del navegador
        if (Session["Usuario"] == null)
            Response.Redirect("~/Publico/Login.aspx");
        if (!Page.IsPostBack)
        {
            cargarCurso();
            ViewState["Orden"] = "Nombre";
            cargarSesion();//Cargar los datos de session
        }
    }//Fin del load
    //Metodo para cargar la sesion
    private void cargarSesion()
    {
        lblUsuarioLogueado.Text = ((Usuarios)Session["Usuario"]).Usuario;
        lblRolLogueado.Text = ((Usuarios)Session["Usuario"]).Rol;
    }//Fin del metodo cargarSesion...
    private void cargarCurso()
    {
        try
        {
            ddlCurso.DataSource = CursoDAO.obtenerCursos();
            ddlCurso.DataTextField = "Nombre";
            ddlCurso.DataValueField = "IdCurso";
            ddlCurso.DataBind();
            ddlCurso.Items.Insert(0, "(Todos)");
        }
        catch (Exception ex)
        {
            lblMenCurso.Text = ex.Message.ToString();
            lblMenCurso.ForeColor = System.Drawing.Color.Red;
        }
    }//Fin metodo cargarCurso
    protected void btnVolver_Click(object sender, EventArgs e)
    {
        //Vuelve a la pagina de inicio de Administracion
        Response.Redirect("~/Administracion/Administracion.aspx");
    }
    protected void grillaCursos_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        grillaCursos.PageIndex = e.NewPageIndex;
        //cargarGrilla();
        lblMenResultado.Text = string.Empty;
    }
    protected void grillaCursos_Sorting(object sender, GridViewSortEventArgs e)
    {
        ViewState["Orden"] = e.SortExpression;
        //cargarGrilla();
        lblMenResultado.Text = string.Empty;
    }
    protected void grillaCursos_SelectedIndexChanged(object sender, EventArgs e)
    {
        int idCurso = int.Parse(grillaCursos.SelectedDataKey.Value.ToString());
        List<HorarioXCursoConsulta> listaHorarioCurso = new List<HorarioXCursoConsulta>();
        try
        {
            listaHorarioCurso = CursoDAO.obtenerHorarioXCurso(idCurso);
            grillaHorario.DataSource = listaHorarioCurso;
            grillaHorario.DataBind();
            grillaHorario.Visible = true;
            if (listaHorarioCurso.Count != 0)
            {
                lblResOperacion.Text = "Operacion exitosa...";
                lblResOperacion.ForeColor = System.Drawing.Color.Green;
            }
            else
            {
                lblResOperacion.Text = "Ese curso no tiene horarios asignado...";
                lblResOperacion.ForeColor = System.Drawing.Color.Red;
            }
        }
        catch (Exception ex)
        {
            lblResOperacion.Text = ex.Message.ToString();
            lblResOperacion.ForeColor = System.Drawing.Color.Red;
        }
    }
    protected void btnLimpiar_Click(object sender, EventArgs e)
    {
        limpiarBus();
    }
    private void limpiarBus()
    {
        txtNombreProfesor.Text = string.Empty;
        txtApellidoProfesor.Text = string.Empty;
        lblMenResultado.Text = string.Empty;
        lblResOperacion.Text = string.Empty;
        ddlCurso.SelectedIndex = 0;
        grillaCursos.Visible = false;
        grillaHorario.Visible = false;
    }

    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        cargarGrillaBus();
    }
    private void cargarGrillaBus()
    {
        //Declaro variables aux para almacenar lo que tienen los textbox
        List<CursoConsulta> listaCursoConsulta = new List<CursoConsulta>();
        string nomProfe = null;
        string apeProfe = null;
        int? idCurso = null;
        if (txtNombreProfesor.Text != string.Empty)
            nomProfe = txtNombreProfesor.Text;
        if (txtApellidoProfesor.Text != string.Empty)
            apeProfe = txtApellidoProfesor.Text;
        if (ddlCurso.SelectedIndex != 0)
            idCurso = int.Parse(ddlCurso.SelectedValue);

        try
        {
            listaCursoConsulta = CursoDAO.obtenerCursoConsulta(ViewState["Orden"].ToString(), idCurso, nomProfe, apeProfe);
            grillaCursos.DataSource = listaCursoConsulta;
            grillaCursos.DataKeyNames = new string[] { "IdCurso" };
            grillaCursos.DataBind();
            grillaCursos.Visible = true;
            if (listaCursoConsulta.Count != 0)
            {
                lblMenResultado.Text = "Busqueda Exitosa...";
                lblMenResultado.ForeColor = System.Drawing.Color.Green;
            }
            else
            {
                lblMenResultado.Text = "No hay resultados para esa busqueda...";
                lblMenResultado.ForeColor = System.Drawing.Color.Red;
            }
        }
        catch (Exception ex)
        {
            lblMenResultado.Text = ex.Message.ToString();
            lblMenResultado.ForeColor = System.Drawing.Color.Red;
        }        
    }//Fin del cargarGrillaBus...
    protected void btnCerrarSesion_Click(object sender, EventArgs e)
    {
        ////Eliminar la cookie
        //Context.Response.Cookies[FormsAuthentication.FormsCookieName].Expires = DateTime.Now;
        ////Terminar la Sesion
        //FormsAuthentication.SignOut();
        //Response.Redirect("~/Publico/InicioWF.aspx");

        //************************************************************
        //Otra forma de eliminar la cookie del equipo del usuario
        if (Request.Cookies[FormsAuthentication.FormsCookieName] != null)
        {
            HttpCookie paraBorrar = new HttpCookie(FormsAuthentication.FormsCookieName);
            paraBorrar.Expires = DateTime.Now.AddDays(-1d);
            Response.Cookies.Add(paraBorrar);
        }
        FormsAuthentication.SignOut();
        Session.Abandon();
        Response.Redirect("~/Publico/InicioWF.aspx");
    }
}